package com.deer.wms.project.root.service;

import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author : wei
 * @since : 2021-10-28 10:35:43
 **/
public interface SuperService<T> extends IService<T> {

    /**
     * 获取实体的类型
     * @return Class<T>
     */
    @Override
    Class<T> getEntityClass();

    /**
     * 通过某个字段值查询对应的唯一实体对象
     * @param field 字段名
     * @param value 字段值
     * @return 对象
     */
    T getOneByField(String field, Object value);

    /**
     * 通过某个字段值查询对应的唯一实体对象
     * @param map 字段名-值 键值对map
     * @return 对象
     */
    T getOneByMap(Map<String, Object> map);

    /**
     * 通过某个字段值查询对应的实体对象
     * @param field 字段名
     * @param value 字段值
     * @return 对象list
     */
    List<T> getListByField(String field, Object value);

    /**
     * 通过某个字段值查询对应的实体对象并对其排序
     * @param map 查询map
     * @param map2 排序map
     * @return 对象list
     */
    List<T> getOrderListByMap(Map<String, Object> map, Map<String, Boolean> map2);
}
